Altri articoli sul numero 63 Articoli sullo stesso argomento Alcuni programmatori assembler hanno chiesto come mai la velocita' di accesso alla Chip RAM e ai registri dei chip custom su A4000/040 e' inferiore a quella dell'A1200 base, a parita' di modo video e carico DMA: tutti i programmi che fanno continuo accesso alla Chip RAM e ai registri dei chip custom (es: i demo) su A4000/040 girano piu' piano. A volte cio' significa che non girano affatto: le sincronizzazioni del programma saltano e il 4000 si pianta (chiaramente in questo caso non sono stati scritti da un "coder" in gamba). Il motivo e' semplice se si riflette sul modo in cui il 68040 deve accedere alla Chip RAM. Come esempio, prendiamo il caso in cui il DMA video e' inattivo (es: durante il blanking) e bisogna copiare nel registro D5 un valore a 32 bit, che risiede in Chip RAM allineato alla longword. Poiche' la cache dati non e' abilitata per la Chip RAM, il 68040 eseguira' un ciclo di bus con lettura di longword singola. Durante il primo ciclo di clock a 25Mhz (quindi passano 40ns) il 68040 esegue tutti i preparativi. A questo punto sarebbe pronto per leggere la longword, ma per inefficienze delle PAL della scheda 68040 Commodore devono passare altri due cicli di clock (altri 80ns) prima che i segnali arrivino al connettore della scheda CPU: nel frattempo il 68040 e' tenuto bloccato. I segnali finalmente giunti sulla motherboard arrivano al Fat Gary, che obbedisce agli ordini e inizia la manovra di accesso alla Chip RAM: ma a malincuore dice alla CPU di aspettare sinche' il clock a 7Mhz che governa gli accessi della Chip RAM esegue una transizione dallo stato alto a quello basso, per dare tempo alla povera Alice di capire quello che sta succedendo: in media trascorrono altri 71ns (se siamo particolarmente sfortunati pero' ci vuole il doppio). A questo punto se il ciclo successivo del clock a 7Mhz e' dispari il 68040 ha il "via libera" per accedere alla Chip RAM, altrimenti deve attendere ancora per due cicli del clock a 7Mhz (282ns): mediamente attende altri 141ns. Trascorso questo tempo, Fat Gary ordina a Bridgette di aprire le porte della Chip RAM al 68040. Purtroppo i cardini sono un po' arrugginiti per l'eta' e ci vogliono altri 16ns (il doppio se l'accesso non fosse allineato alla longword). Le "porte" restano aperte esattamente per due cicli del clock da 7Mhz, 282ns durante i quali il 68040 sta ancora fermo. Se dividiamo il tempo di attesa totale per la durata di un ciclo di clock a 25Mhz e arrotondiamo all'intero superiore (si deve fare perche' la CPU e' asincrona con la motherboard) abbiamo il numero di cicli di CPU complessivi necessari per leggere una longword in questa situazione ottimale: 16, cioe' sono stati introdotti 14 stati di attesa (al 68040 basterebbero 2 soli cicli per eseguire una lettura) ed ci sono voluti 640ns. Nel caso di A1200 le cose procedono molto diversamente. Il 68020 ha bisogno di tre cicli di clock a 14Mhz per completare una lettura invece dei due a 25Mhz del 68040, ma il suo clock e' sincrono con quello a 7Mhz che governa gli accessi in Chip RAM e (come nel caso di A500/A2000) il ritardo della porta viene nascosto. Quindi la CPU del 1200 spende il primo ciclo di clock a 14Mhz (71ns) per emettere l'indirizzo; di nuovo se il ciclo successivo del clock a 7Mhz e' dispari il 68020 ha il "via libera" per accedere alla Chip RAM, altrimenti deve attendere due cicli del clock a 7Mhz (282ns): mediamente attende 141ns. Infine per leggere la longword dalla Chip RAM occorrono i canonici 282ns. In totale sono bastati 494ns: 146ns meno dell'A4000/040. Nel tempo impiegato per leggere 150 kilobyte di Chip RAM l'A4000/040 resta indietro di un'intero frame rispetto all'A1200 inespanso: ovviamente nelle applicazioni reali questi dati servono per fare dei calcoli, ed e' qui dove il 4000 straccia il 1200 recuperando ampiamente il tempo perso. Questo esempio e' un caso estremo, semplificato per facilitare la comprensione e senza la pretesa di essere rigoroso. I tempi reali sono un po' diversi e si dovrebbero considerare altri fattori, ma il risultato e' confermato dalla pratica e dimostra ancora una volta che i due stati di attesa extra della scheda 68040 Commodore e la scelta di voler conservare lo slot CPU di A3000 (che sull'A4000/040 e' un corpo estraneo) hanno un effetto rovinoso. Le acceleratrici per A1200 e la scheda 68030 di A4000 non peggiorano significativamente le prestazioni della Chip RAM: un rallentamento c'e' sempre perche' bisogna sincronizzare parti che viaggiano a clock diversi, ma e' trascurabile. Chi desidera conoscere la differenza esatta di velocita' tra la Chip RAM (e di conseguenza anche i registri dei chip custom) di A1200, quella di A4000/040 e quella di un A1200 accelerato puo' scriversi una banale routine assembler, badando che entri tutta nella cache istruzioni del 68020. In questo modo si puo' anche facilmente controllare che cosa accade al variare del carico DMA video.